/*
 * op_coda.cpp
 *
 *  Created on: 08/nov/2014
 *      Author: Gabriel
 */

#include "coda.h"
using namespace std;

void Coda::creaCoda(){
	testa=-1;
	fondo=-1;
}

boolean Coda::codaVuota(){
	if (fondo<0|| testa<0 || testa>fondo) return true;
	else return false;
}

tipoelem Coda::leggiCoda(){
	return persone[testa];
}

void Coda::inCoda(tipoelem elemento){
	fondo++;
	if(codaVuota()){
		testa++;
		persone[testa]=elemento;
	}else
		persone[fondo]=elemento;
}

void Coda::fuoriCoda(){
	if(!codaVuota())
		testa++;
}

Coda::Coda(){
	creaCoda();
}
Coda::~Coda(){}

void stampaCoda(Coda coda){
	int i=0;
	while (!coda.codaVuota()){
		cout<<"Nome: "<<coda.leggiCoda().Nome<<endl;
		cout<<"Cognome: "<<coda.leggiCoda().Cognome<<endl;
		coda.fuoriCoda();
		i++;
	}
	cout<<"No. di persone che hanno pagato con Bancomat= "<<i<<endl;
}

void spartireCoda(Coda coda,Coda* codaBancomat,Coda* codaContanti){

	while(!coda.codaVuota()){
		if ((coda.leggiCoda()).payment == tipoelem::bancomat){
			codaBancomat->inCoda(coda.leggiCoda());
			coda.fuoriCoda();
		}else{
			codaContanti->inCoda(coda.leggiCoda());
			coda.fuoriCoda();
		}
	}
}

void acquisisci(Coda* coda){
	tipoelem dato;

	dato.Nome="A";
	dato.Cognome="A";
	dato.payment = tipoelem::bancomat;
	coda->inCoda(dato);

	dato.Nome="B";
	dato.Cognome="B";
	dato.payment = tipoelem::contanti;
	coda->inCoda(dato);

	dato.Nome="C";
	dato.Cognome="C";
	dato.payment = tipoelem::bancomat;
	coda->inCoda(dato);

	dato.Nome="D";
	dato.Cognome="D";
	dato.payment = tipoelem::contanti;
	coda->inCoda(dato);

	dato.Nome="E";
	dato.Cognome="E";
	dato.payment = tipoelem::contanti;
	coda->inCoda(dato);

	dato.Nome="F";
	dato.Cognome="F";
	dato.payment = tipoelem::bancomat;
	coda->inCoda(dato);

	dato.Nome="G";
	dato.Cognome="G";
	dato.payment = tipoelem::contanti;
	coda->inCoda(dato);

	dato.Nome="H";
	dato.Cognome="H";
	dato.payment = tipoelem::bancomat;
	coda->inCoda(dato);

	dato.Nome="I";
	dato.Cognome="I";
	dato.payment = tipoelem::contanti;
	coda->inCoda(dato);

	dato.Nome="L";
	dato.Cognome="L";
	dato.payment = tipoelem::contanti;
	coda->inCoda(dato);
}
